#ifndef __LOOP_QUEUE_H
#define __LOOP_QUEUE_H

/**
 * @brief 循环队列结构体
 * 用于实现时间轮盘算法，其中capacity为时间轮槽位数，即超时时间
 */
typedef struct loop_queue_s
{
    int front;    ///< 队头
    int rear;     ///< 队尾
    int capacity; ///< 队列容量上限
    int size;     ///< 队列大小
    int **array;  ///< 队列数组，存放可变大小的数组
} LoopQueue_t;

/**
 * @brief 创建循环队列
 * 
 * @param capacity 队列容量上限，即时间轮槽位数
 * @return LoopQueue_t* 返回创建的队列指针
 */
LoopQueue_t *createLoopQueue(int capacity);
void destroyLoopQueue(LoopQueue_t *queue);
int *enqueueLoop(LoopQueue_t *queue, int *element);
int *dequeueLoop(LoopQueue_t *queue);
int *front(LoopQueue_t *queue);
int *rear(LoopQueue_t *queue);
int isEmpty(LoopQueue_t *queue);
int isFull(LoopQueue_t *queue);

#endif /* __LOOP_QUEUE_H */